package cn.zjnu.service.impl;

import cn.zjnu.dao.LoginDao;
import cn.zjnu.domain.User;
import cn.zjnu.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class LoginServiceImpl implements LoginService {
    @Autowired
    private LoginDao loginDao;
    /*
         注册服务
     */
    @Override
    public boolean signUp(User user) {
        boolean signUpSuccess = true;
        if(user.getUsername().equals("errorName")){
            signUpSuccess = false;
            System.out.println("service 检测到存在相同的用户名:"+user.getUsername()+" 注册失败!");
        }else {
            loginDao.save(user);
        }
        return signUpSuccess;
    }
    /*
        登录服务
     */
    @Override
    public boolean loginIn(User user) {
        return checkAccount(user);
    }
    /*
        修改密码服务
        before 记录原账户信息
        after 记录修改密码后的账户信息
            after 应该只记录账户的新密码，因为不需要用户再次输入用户名
        流程：
            1. 检查用户名、密码是否匹配
            2. 修改账户信息
            3. 返回修改密码结果(true/false)
     */
    @Override
    public boolean changePassword(User before,User after) {
//        boolean flag
        return before.getPassword().equals(after.getPassword()) ? true:false;
    }
    /*
        注册时检查是否存在相同用户名
    */
    @Override
    public boolean checkRename(User user) {
        User user1 = loginDao.SelectByUsername(user);
        boolean sameName = true;
        if (user1 == null){
            sameName = false;
            System.out.println("不存在重复用户名，注册通过");
        }else {
            System.out.println("存在重复用户名，抛出异常");
        }
        return sameName;
    }
    /*
        登陆时检查是否信息匹配
     */
    public boolean checkAccount(User user){
        boolean accountMatched = true;
        User user1 = loginDao.SelectByNamePassword(user);
        if(user1 == null){
            accountMatched = false;
            System.out.println("账户密码不匹配，抛出异常");
        }else{
            System.out.println("登录成功");
            user.setId(user1.getId());
        }
        return accountMatched;
    }
}
